In [6]:
class Simple:
def __str__(self):
return 'Simple {id}'.format(id=id(self))
simple_instance = Simple()
simple_instance_two = Simple()
print(simple_instance)
print(simple_instance_two)
check out the terms:
https://runestone.launchcode.org/runestone/static/thinkcspy/ClassesBasics/Glossary.html
In [11]:
class Dog:
"""
A class that represents a Dog and the sound a dog can make
"""
def __init__(self):
self.sound = 'bark'
self.category = 'mammal'
def speak(self):
"""Returns the sound a dog makes"""
return self.sound
my_dog = Dog()
print('A dog goes', my_dog.speak())
print('A dog is a', my_dog.category)
In [16]:
class Room:
def __init__(self, size, name):
self.size = size
self.name = name
def get_name(self):
name_list = self.name.split('_')
name_list_normalized = [word.capitalize() for word in name_list]
return ' '.join(name_list_normalized)
def __str__(self):
return '{name} ({size})'.format(
name=self.get_name(),
size=self.size
)
one_room = Room(100, 'play_room')
print(one_room)
print([one_room])
list_of_rooms = [one_room]
for room in list_of_rooms:
print(room)
In [17]:
## Relationship to dictionaries
from pprint import pprint
rooms_with_size = {
'kitchen': 400,
'living_room': 200,
'dining_room': 250,
'bedroom_one': 400,
'bedroom_two': 300,
'master_bedroom': 350,
'bedroom_three': 200,
'basement': 800,
'attic': 475
}
pprint(rooms_with_size)
class Room:
def __init__(self, size, name):
self.size = size
self.name = name
def get_name(self):
name_list = self.name.split('_')
name_list_normalized = [word.capitalize() for word in name_list]
return ' '.join(name_list_normalized)
def __str__(self):
return '{name} ({size})'.format(
name=self.get_name(),
size=self.size
)
rooms = [
Room(size, room_name)
for (room_name, size) in rooms_with_size.items()
]
for room in rooms:
print()
print(room)
In [22]:
class Person:
def __init__(self, age, name, rooms=None):
self.age = age
self.name = name
if rooms is None:
self.rooms = []
else:
self.rooms = rooms
def add_room(self, room):
self.rooms.append(room)
def remove_room(self, room):
self.rooms.remove(room)
def __str__(self):
return '{name} {ll}'.format(
name=self.name,
ll=self.rooms
)
kid_one = Person(10, 'Bill')
kid_two = Person(8, 'Sandy')
adult_one = Person(34, 'Sam')
adult_two = Person(28, 'Chris')
print(kid_one, kid_two, adult_one, adult_two)
In [23]:
rooms_with_size = {
'kitchen': 400,
'living_room': 200,
'dining_room': 250,
'bedroom_one': 400,
'bedroom_two': 300,
'master_bedroom': 350,
'bedroom_three': 200,
'basement': 800,
'attic': 475
}
class Room:
def __init__(self, size, name):
self.size = size
self.name = name
def get_name(self):
name_list = self.name.split('_')
name_list_normalized = [word.capitalize() for word in name_list]
return ' '.join(name_list_normalized)
def __str__(self):
return '{name} ({size})'.format(
name=self.get_name(),
size=self.size
)
class Person:
def __init__(self, age, name, rooms=None):
self.age = age
self.name = name
if rooms is None:
self.rooms = []
else:
self.rooms = rooms
def add_room(self, room):
self.rooms.append(room)
def remove_room(self, room):
self.rooms.remove(room)
def __str__(self):
return str((self.name, self.age))
rooms = [
Room(size, room_name)
for (room_name, size) in rooms_with_size.items()
]
chip = Person(45, 'Chip', rooms)
print(chip)
print('Name:', chip.name)
print('Age:', chip.age)
print('Rooms:', chip.rooms)
print()
for room in chip.rooms:
print(room)
In [24]:
rooms_with_size = {
'kitchen': 400,
'living_room': 200,
'dining_room': 250,
'bedroom_one': 400,
'bedroom_two': 300,
'master_bedroom': 350,
'bedroom_three': 200,
'basement': 800,
'attic': 475
}
class Room:
def __init__(self, size, name):
self.size = size
self.name = name
def get_name(self):
name_list = self.name.split('_')
name_list_normalized = [word.capitalize() for word in name_list]
return ' '.join(name_list_normalized)
def __str__(self):
return '{name} ({size})'.format(
name=self.get_name(),
size=self.size
)
class Person:
def __init__(self, age, name, rooms=None):
self.age = age
self.name = name
if rooms is None:
self.rooms = []
else:
self.rooms = rooms
def add_room(self, room):
self.rooms.append(room)
def remove_room(self, room):
self.rooms.remove(room)
def print_rooms(self):
for room in self.rooms:
print(room)
def __str__(self):
return str((self.name, self.age))
jennifer = Person(67, 'Jennifer')
for room_name, size in rooms_with_size.items():
new_room = Room(size, room_name)
jennifer.add_room(new_room)
jennifer.print_rooms()
In [27]:
from random import choice
class Person:
def __init__(self, age, name, rooms=None):
self.age = age
self.name = name
if rooms is None:
self.rooms = []
else:
self.rooms = rooms
def __str__(self):
return self.name
def add_room(self, room):
self.rooms.append(room)
def remove_room(self, room):
self.rooms.remove(room)
def amount_cleaned(self):
amount = 0
for room in self.rooms:
amount += room.size
return amount
def print_rooms(self):
for room in self.rooms:
print(room)
rooms_with_size = {
'kitchen': 400,
'living_room': 200,
'dining_room': 250,
'bedroom_one': 400,
'bedroom_two': 300,
'master_bedroom': 350,
'bedroom_three': 200,
'basement': 800,
'attic': 475
}
class Room:
def __init__(self, size, name):
self.size = size
self.name = name
def get_name(self):
name_list = self.name.split('_')
name_list_normalized = [word.capitalize() for word in name_list]
return ' '.join(name_list_normalized)
def __str__(self):
return '{name} ({size})'.format(
name=self.get_name(),
size=self.size
)
kid_one = Person(10, 'Bill')
kid_two = Person(8, 'Sandy')
adult_one = Person(34, 'Sam')
adult_two = Person(28, 'Chris')
people = [kid_one, kid_two, adult_one, adult_two]
rooms = [
Room(size, room_name)
for (room_name, size) in rooms_with_size.items()
]
## Setup rooms
rooms_to_clean = rooms.copy()
while len(rooms_to_clean) > 0:
# Randomly assign a person to a chore
person = choice(people)
room = choice(rooms_to_clean)
person.add_room(room)
# This ensures we stop our loop at some point
rooms_to_clean.remove(room)
for person in people:
print(person, 'cleaned a total of', person.amount_cleaned(), 'square feet')
person.print_rooms()
print()
In [29]:
from random import choice
class Person:
def __init__(self, age, name, rooms=None):
self.age = age
self.name = name
if rooms is None:
self.rooms = []
else:
self.rooms = rooms
def __str__(self):
return self.name
def add_room(self, room):
self.rooms.append(room)
def remove_room(self, room):
self.rooms.remove(room)
def amount_cleaned(self):
amount = 0
for room in self.rooms:
amount += room.size
return amount
def average_amount_cleaned(self):
number_of_rooms = len(self.rooms)
if number_of_rooms > 0:
return round(self.amount_cleaned() / number_of_rooms, 2)
return 0.0
def print_rooms(self):
for room in self.rooms:
print(room)
rooms_with_size = {
'kitchen': 400,
'living_room': 200,
'dining_room': 250,
'bedroom_one': 400,
'bedroom_two': 300,
'master_bedroom': 350,
'bedroom_three': 200,
'basement': 800,
'attic': 475
}
class Room:
def __init__(self, size, name):
self.size = size
self.name = name
def get_name(self):
name_list = self.name.split('_')
name_list_normalized = [word.capitalize() for word in name_list]
return ' '.join(name_list_normalized)
def __str__(self):
return '{name} ({size})'.format(
name=self.get_name(),
size=self.size
)
kid_one = Person(10, 'Bill')
kid_two = Person(8, 'Sandy')
adult_one = Person(34, 'Sam')
adult_two = Person(28, 'Chris')
people = [kid_one, kid_two, adult_one, adult_two]
rooms = [
Room(size, room_name)
for (room_name, size) in rooms_with_size.items()
]
## Setup rooms
rooms_to_clean = rooms.copy()
while len(rooms_to_clean) > 0:
# Randomly assign a person to a chore
person = choice(people)
room = choice(rooms_to_clean)
person.add_room(room)
# This ensures we stop our loop at some point
rooms_to_clean.remove(room)
for person in people:
print(person, 'cleaned a total of', person.amount_cleaned(), 'square feet')
print(person, 'cleaned an average of', person.average_amount_cleaned(), 'square feet per room')
person.print_rooms()
print()
In [ ]: